#ifndef H_OPTIMIZEGEMS
#define H_OPTIMIZEGEMS
#include "precompiled.h"
#include "optimization.h"
namespace weo
{
    namespace engine
    {
        namespace optimization
        {
            class OptimizeGems : public Optimization
            {
            private:
                static const unsigned int s_Gemslotcount = weo::engine::Slotcount*3;
                google::sparse_hash_set<size_t> m_HashSet;
                inline bool Valid(weo::engine::item::GemPtr gems[s_Gemslotcount]);
                size_t hashGems(weo::engine::item::GemPtr gems[s_Gemslotcount]);
                float evaluateTF(weo::engine::item::GemPtr gems[s_Gemslotcount]);
                float optimizeGems(weo::engine::item::GemPtr inputgems[s_Gemslotcount], int locked = -1);
            public:
                void Optimize();
                void OptimizeThreadRunner() {}; // not used here
                ~OptimizeGems();
                OptimizeGems();
            };
        };
    };
};
#endif